using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;

namespace VisualGTest.Binding
{
    /// <summary>
    /// A simplified interface for process objects that supports mocking.
    /// </summary>
    interface IProcess : IDisposable
    {
        int ExitCode { get; }
        bool HasExited { get; }
        ProcessStartInfo StartInfo { get; set; }

        StreamReader StandardError { get; }
        StreamWriter StandardInput { get; }
        StreamReader StandardOutput { get; }

        bool Start();
        void WaitForExit();
        bool WaitForExit(int milliseconds);
        void Kill();
    }
}
